package interfaccia;

import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.JOptionPane;
import fsmCore.ClasseEquivalenza;
import fsmCore.Macchina;


/*@  
  @ invariant classiEq.size()>=1
  @
  @*/
public class MenuGestioneClassiEq extends Menu{

	private static final long serialVersionUID = 1L;

	private static final String[] VOCI = { "Crea Classe" ,"Elimina Classe"};
	private static final String TITOLO = "Menu Gestione Classi Equivalenza";
	
	private Vector<ClasseEquivalenza> classiEq;
	private Macchina [] fsm;
	
	public MenuGestioneClassiEq(Vector<ClasseEquivalenza> _classiEq, Macchina [] _fsm) {
		super(TITOLO,VOCI);
		classiEq=_classiEq;
		fsm=_fsm;
		super.getFinestra().setLocation(250, 150);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object click =e.getSource();
		if (click == super.getPulsanti()[0]){
			ClasseEquivalenza ce1 = Input.inputClasseEq();
			if(ce1!=null){
				if(!ce1.isPresente(classiEq)){
					classiEq.addElement(ce1);		//aggiungiamo un elemento del vettore classiEq
					JOptionPane.showMessageDialog(null, ce1.getNome()+"\ne' stata aggiunta");
				}
				else{
					JOptionPane.showMessageDialog(null, "Impossibile aggiungere "+ce1.getNome()+"\nperche' gia' presente");
				}
			}
		}
		else if(click == super.getPulsanti()[1]){
			ClasseEquivalenza daEliminare = Input.selezionaClasseEq("Seleziona la classe che vuoi eliminare", classiEq);
			if(daEliminare!=null){
				if((!daEliminare.isUsata(fsm[0]))&&(!daEliminare.isUsata(fsm[0]))){
						if(!daEliminare.equals(classiEq.get(0))){
							classiEq.removeElement(daEliminare); 	//eliminiamo un elemento del vettore classiEq
							JOptionPane.showMessageDialog(null, daEliminare.getNome()+"\ne' stata rimossa");
						}
						else
							JOptionPane.showMessageDialog(null, "Impossibile eliminare la calsse di default");
						
					}
				else{
					JOptionPane.showMessageDialog(null, "Impossibile eliminare una calsse che contiene delle transizioni");
				}
			}
			

		}
		
	}

}
